// request.js

import axios from 'axios';

//在服务器时使用
// const baseURL = 'http://47.113.226.111:9090/api';
const baseURL = 'http://localhost:9090/api';

const instance = axios.create({
  baseURL,
  timeout: 10000,
});

instance.interceptors.request.use(
  (config) => {
    // 在发送请求之前可以做一些处理，比如在请求头中添加 token
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `${token}`;
    }

    // 如果存在 data 属性，则将其视为 JSON 数据
    if (config.data) {
      config.headers['Content-Type'] = 'application/json';
    }

    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

instance.interceptors.response.use(
  (response) => {
    // 对响应数据进行处理
    return response.data;
  },
  (error) => {
    // 对响应错误进行处理
    return Promise.reject(error);
  }
);

const request = {
  getHttp: ({ url, params, success, error }) => {
    instance.get(url, { params })
      .then((response) => {
        success(response);
      })
      .catch((err) => {
        error(err);
      });
  },

  postHttp: ({ url, data, params, success, error }) => {
    // 如果同时存在 data 和 params，则使用 data 发送 JSON 数据
    if (data && !params) {
      instance.post(url, data)
        .then((response) => {
          success(response);
        })
        .catch((err) => {
          error(err);
        });
    } else {
      instance.post(url, null, { params })
        .then((response) => {
          success(response);
        })
        .catch((err) => {
          error(err);
        });
    }
  },

  // 添加其他接口方法...
};

export default request;
